package dao

import (
	"html/template"
)

var TimeLayout string = "2006-01-02 15:04:05"
var TimeLayoutShow string = "2006-01-02 15:04"

//Cache
var Cache map[string]interface{}

//首页每页数据条数
var (
	IndexPageSize   int64 = 10
	TagListPageSize uint  = 30
)

var FuncMap = template.FuncMap{
	"ShowMonthDay": ShowMonthDay, //获取datetime数据的月日
	"GetYear":      GetYear,      //获取datetime数据的年
	"ShowSiteCFG":  ShowSiteCFG,  //获取配置的value
	"Unescaped":    Unescaped,    //转义
	"Pager":        Pager,        //数据分页
}

//文章
type PostListData struct {
	Lists       map[int64]PostData `json:"lists"`        //列表
	PageNum     int                `json:"page_num"`     //总页数
	DataNum     int                `json:"data_num"`     //总记录条数
	CurrentPage int                `json:"current_page"` //当前页
	PageSize    int                `json:"page_size"`    //每页数据条数
}

//最新文章
type NewPostList struct {
	Id    int    `json:"id"`
	Title string `json:"title"`
}

//文章分类
type TypeListData struct {
	Id        int         `json:"id"`
	Name      string      `json:"name"`
	PostNum   int         `json:"post_num"`
	Fid       int         `json:"fid"`
	FidName   string      `json:"fid_name"`
	ReadLevel int         `json:"read_level"`
	IsShow    bool        `json:"is_show"`
	Child     interface{} `json:"child"`
}

//标签
type TagData struct {
	Id        int    `json:"id"`
	Name      string `json:"name"`
	ContentId int    `json:"content_id"`
}

//访客信息(长期保存于Redis中，当Session使用)
type GuestUserInfo struct {
	Key           string //Session Key
	Name          string //姓名
	Email         string //Email
	WebSite       string //个人网站
	IsAdmin       bool   //是否是后台管理员
	AdminId       int64  //管理员ID
	LastLoginTime int64  //最后登陆的时间
	LastLoginIp   string //最后登陆的IP
	AddTime       int64  //首次加入时间(时间戳)
	UpdateTime    int64  //最后更新时间(时间戳)
	AccessCount   uint   //访问次数(每访问间隔超过6小时记为一次)
}

//网站配置数据
type SiteOPT struct {
	Id          int64         //Id
	AreaCode    string        //区位码
	Key         string        //Kye
	Title       template.HTML //Title
	Description template.HTML //Description
	Value       string        //值
	RelationId  int64         //相关ID
	Short       int64         //排序ID
	Extension   string        //扩展数据
	AddTime     string        //添加时间
	UpdateTime  string        //更新时间
}

/**
后台登录用户
*/
type AdminUser struct {
	Id          int64  //Id
	Name        string //用户名
	Pass        string //密码
	NiceName    string //显示昵称
	Email       string //邮箱
	Phone       string //手机号
	FaceImg     string //头像url
	Status      int8   //用户状态  -1禁用账户  0普通游客  1普通登录用户  2编辑  3管理员
	Description string //个人描述
	AddTime     string //添加(注册)时间
	UpdateTime  string //数据更新时间
}

/**
管理员登陆记录
*/
type AdminLogin struct {
	Id         int64  //
	Key        string //session_id
	Uid        int64  //用户Id
	Status     int8   //状态 0停用 1启用
	LoginFrom  uint8  //状态 0未知 1Web账号密码登陆  2微信扫描登陆  3第三方账号QQ登陆  4第三方账号微博登陆
	LoginIp    string //最后登录Ip
	UserAgent  string //UserAgent
	AddTime    string //添加时间
	UpdateTime string //
}

/**
登陆Session结构
*/
type AdminUserLogin struct {
	Key           string //session_id
	Uid           int64  //用户Id
	Name          string //用户名
	NiceName      string //显示昵称
	Email         string //邮箱
	Phone         string //手机号
	FaceImg       string //头像url
	Status        int8   //用户状态  -1禁用账户  0普通游客  1普通登录用户  2编辑  3管理员
	Description   string //个人描述
	LastLoginIp   string //最后登录Ip
	LastLoginTime string //最后登录时间
	LoginFrom     uint8  //状态 0未知 1Web账号密码登陆  2微信扫描登陆  3第三方账号QQ登陆  4第三方账号微博登陆
	UserAgent     string //UserAgent
}
